package mn.buya.db;

import android.content.ContentValues;
import android.content.Context;
import android.database.Cursor;
import android.database.SQLException;
import android.database.sqlite.SQLiteDatabase;

/**
 * Датабазтай харьцах үндсэн класс
 * 
 * @author mbms
 * @version 1.0
 * 
 */
public class DBAdapter {

	// Хүснэгтийн баганын түлхүүр үгс
	public static final String KEY_ROWID = "_id";
	public static final String KEY_QUESTION = "question";
	public static final String KEY_ANSWER = "answer";

	private Context context;
	private SQLiteDatabase database;
	private AppDataHelper dataHelper;

	public DBAdapter(Context context) {
		this.context = context;
	}

	/**
	 * Датабазтай холболт тогтоох
	 * 
	 * @return
	 */
	public DBAdapter open() {
		dataHelper = new AppDataHelper(context);
		database = dataHelper.getWritableDatabase();
		return this;
	}

	/**
	 * Холболтыг хаах
	 */
	public void close() {
		dataHelper.close();
	}

	/**
	 * Хүснэгтрүү нэг бичлэг нэмэх
	 * 
	 * @param question
	 * @param answer
	 * @return
	 */
	public long insertQAndA(String question, String answer) {
		ContentValues contentValues = createContentValues(question, answer);

		return database.insert(AppDataHelper.TABLE_NAME, null, contentValues);
	}

	/**
	 * Хүснэгтийн нэг бичлэгийг өөрчлөх
	 * 
	 * @param rowId
	 * @param question
	 * @param answer
	 * @return
	 */
	public boolean updateQAndA(long rowId, String question, String answer) {
		ContentValues updateValues = createContentValues(question, answer);

		return database.update(AppDataHelper.TABLE_NAME, updateValues,
				KEY_ROWID + "=" + rowId, null) > 0;
	}

	/**
	 * Хүснэгтээс тухайн id-тай бичлэгийг устгах
	 * 
	 * @param rowId
	 * @return
	 */
	public boolean deleteQAndA(long rowId) {
		return database.delete(AppDataHelper.TABLE_NAME, KEY_ROWID + "="
				+ rowId, null) > 0;
	}

	/**
	 * Хүснэгтийн бүх бичлэгийг унших
	 * 
	 * @return
	 */
	public Cursor fetchAllQAndA() {
		return database.query(AppDataHelper.TABLE_NAME, new String[] {
				KEY_ROWID, KEY_QUESTION, KEY_ANSWER }, null, null, null, null,
				null);
	}

	/**
	 * Хүснэгтээс тухайн id-тай нэг бичлэгийг унших
	 * 
	 * @param rowId
	 * @return
	 * @throws SQLException
	 */
	public Cursor fetchQAndA(long rowId) throws SQLException {
		Cursor mCursor = database.query(true, AppDataHelper.TABLE_NAME,
				new String[] { KEY_ROWID, KEY_QUESTION, KEY_ANSWER }, KEY_ROWID
						+ "=" + rowId, null, null, null, null, null);

		if (mCursor != null) {
			mCursor.moveToFirst();
		}

		return mCursor;
	}

	/**
	 * ContentValues-г цэнэглэх
	 * 
	 * @param question
	 * @param answer
	 * @return
	 */
	private ContentValues createContentValues(String question, String answer) {
		ContentValues values = new ContentValues();
		values.put(KEY_QUESTION, question);
		values.put(KEY_ANSWER, answer);
		return values;
	}

}
